package com.example.myspringbootpj.service;

import ch.qos.logback.core.util.MD5Util;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.codec.cli.Digest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;
import org.springframework.web.client.RestTemplate;

import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

@Service
public class TranslationService {

    @Value("${baidu.api.appid}")
    private String appId;

    @Value("${baidu.api.secret}")
    private String secret;

    private final RestTemplate restTemplate;

    public TranslationService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    public String translate(String text, String Chinese) {

try {

    //MD5加密
    //自定义的全局变量 appid和密钥
    //构建相应参数
    String salt = String.valueOf(System.currentTimeMillis());
    // 使用 Commons库的 DigestUtils 类来计算 MD5
    String sign = DigestUtils.md5DigestAsHex((appId+text+salt+secret).getBytes(StandardCharsets.UTF_8));

    //封装请求参数
    Map<String, String> params = new HashMap<>();
    params.put("q", text);
    params.put("from", "en");
    params.put("to", Chinese);
    params.put("appid", appId);
    params.put("salt", salt);
    params.put("sign", sign);



    String url="https://fanyi-api.baidu.com/api/trans/vip/translate";

//调用百度api
    // 调用百度翻译 API
    String response = restTemplate.getForObject(url + "?q={q}&from={from}&to={to}&appid={appid}&salt={salt}&sign={sign}",
            String.class, params);
    // 解析 JSON 响应
    ObjectMapper objectMapper = new ObjectMapper();
    JsonNode jsonNode = objectMapper.readTree(response);
    JsonNode transResultNode = jsonNode.get("trans_result");

    if (transResultNode != null && transResultNode.isArray()) {
        return transResultNode.get(0).get("dst").asText(); // 返回翻译结果
    }
return null;
}catch (Exception e) {
    e.printStackTrace();
    return null; // 如果发生异常，返回 null
}

//        try {
//            // 调试日志
//            System.out.println("Translating: " + text);
//            return restTemplate.getForObject(url, String.class, map);
//        } catch (Exception e) {
//            System.err.println("Translation failed for text: " + text);
//            e.printStackTrace();
//            return null; // 返回默认值
//        }
    }
}
